Managing installation of vehicle applications using weight values

ABSTRACT

An apparatus and system for vehicle application management. The apparatus includes: at least one storage storing instructions; and at least one processor configured to execute the instructions to perform operations including: obtaining information identifying a first plurality of vehicle applications selected by a user of the vehicle and determining, for the user, a user-specific application matrix comprising first weight values. Each one of the first weight values is for a respective one of the first plurality of vehicle applications, and each one of the first weight values is determined based on at least a frequency of use, by the user, of the respective one of the first plurality of vehicle applications. The operations also include controlling, using the determined user-specific application matrix, downloading and installation, at the vehicle, of at least one of the first plurality of vehicle applications that is not currently installed in the vehicle.

BACKGROUND 1. Technical Field

Non-limiting embodiments of the disclosure relate to managing vehicleapplications installed in a vehicle, and in particular, to an apparatus,a server and a non-transitory computer readable storage medium storinginstructions for selecting and installing, in advance, those vehicleapplications that a user is most likely to use.

2. Description of Related Art

As the functionality within vehicles continues to diversify and evolve,so too have the number of software vehicle applications executable bythe vehicle and available to a driver or an occupant of the vehicle. Thenumber of available vehicle applications, however, may exceed thestorage capacity or the allocated storage space for vehicle applicationswithin a vehicle. Thus, it is possible that not every applicationdeveloped for a vehicle is installed in the vehicle. Instead, a user ofthe vehicle may select one or more desired vehicle applications fromamong those that are available, and the selected vehicle applicationsmay be downloaded and installed in the vehicle via an Over-the-Air(“OTA”) update, for example.

However, the vehicle applications used by individual users of a vehiclemay differ for a wide variety of reasons. For example, a driver of thevehicle may use vehicle applications that may differ from those that apassenger of the vehicle uses. Or, if a car is used by multiple users,e.g., within a family, via a car sharing or rental service, a commercialfleet, a bus, a taxi etc., then the vehicle applications desired or usedby one user of the car may differ from those of another.

Thus, each time a different user uses the vehicle, the correspondingvehicle applications selected by that user that are not currentlyinstalled in the vehicle must be downloaded and installed via an OTAupdate. For example, a first user may pre-configure or select vehicleapplications A, B, C, and D to be installed in the vehicle, and a seconduser may pre-configure or select vehicle applications D, E, F, and G tobe installed in the vehicle. When the second user uses or operates thevehicle after the first user has used the vehicle, the vehicle mayupdate its software configuration by deleting vehicle applications A, B,and C, and downloading and installing vehicle applications E, F, and G.This results in a large amount of data transmission overhead,inefficient use of application data storage in the vehicle, andincreased time for downloading and installation, each time a differentuser uses the vehicle.

In a related art vehicle software management system, a server stores allsoftware configuration information for each user and for each vehicle.That is, the software management is handled entirely on the server side,resulting in a large processing load on the server. Further, because theserver stores the configuration information for each user, a user'spersonal information must be provided to the server and this may beundesirable for users.

Illustrative, non-limiting embodiments of the present disclosure addressthe above disadvantages and other disadvantages not described above.Also, the present invention is not required to overcome thedisadvantages described above, and an illustrative, non-limitingembodiment of the present invention may not overcome any of the problemsdescribed above.

SUMMARY

The present disclosure provides an apparatus, a server, and anon-transitory computer readable storage medium storing instructions formanaging vehicle applications installed in a vehicle using anapplication matrix including weight values for each of the vehicleapplications, wherein each one of the weight values is based on afrequency of use of a respective vehicle application. A non-limitingembodiment employs a user-specific application matrix determined basedon usage of a specific vehicle user. A non-limiting embodiment employs agroup application matrix determined based on usages among a group ofdifferent vehicle users.

Apparatuses and methods consistent with the inventive concept(s) providea vehicle software management system that predicts and pre-installs theapplication software that a user is likely to use or desire in thevehicle, based on an application usage history for a specific userand/or for a predetermined group of users. To this end, vehicleapplications are given weight values based on their frequency of useaccording to application usage history. Those vehicle applications thatare most frequently used by the user, or by a comparable group of users,are predicted to be selected or used by a new user, and are downloadedand installed in the vehicle in advance. This, among other advantages,reduces the number of vehicle applications that must be rewritten,reduces the amount of data that must be transmitted for OTA updates andthe costs thereof, reduces server costs, and reduces download andinstallation time, each instance where a different user uses thevehicle. A non-limiting embodiment also addresses the issue of avehicle's limited storage capacity, or allocated storage space, forvehicle applications and improves efficiency of writing to storage atthe vehicle.

An aspect of the present disclosure provides an apparatus for a vehicle.The apparatus comprises: at least one storage storing instructions; andat least one processor. The at least one processor is configured toexecute the instructions to perform operations comprising: obtaininginformation identifying a first plurality of vehicle applicationsselected by a user of the vehicle and determining, for the user, auser-specific application matrix comprising first weight values. Eachone of the first weight values is for a respective one of the firstplurality of vehicle applications. Each one of the first weight valuesis determined based on a frequency of use, by the user, of therespective one of the first plurality of vehicle applications. Theoperations further comprise controlling, using the determineduser-specific application matrix, downloading and installation, at thevehicle, of at least one of the first plurality of vehicle applicationsthat is not currently installed in the vehicle. The operations mayfurther comprise providing the determined user-specific applicationmatrix to a server.

According to another aspect, the operations may further comprise:controlling receiving, at the vehicle, from a server, a groupapplication matrix comprising second weight values. Each one of thesecond weight values is for a respective one of a second plurality ofvehicle applications. Each one of the second weight values is based on afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users. Theoperations may further comprise controlling, using the group applicationmatrix, downloading and installation, at the vehicle, of at least one ofthe second plurality vehicle applications that is not currentlyinstalled in the vehicle.

Another aspect provides a vehicle application management servercomprising: at least one storage storing instructions; and at least oneprocessor configured to execute the instructions to perform operationscomprising: receiving, from a vehicle, information about a user-specificapplication matrix for a user. The user-specific application matrixcomprises first weight values, each one of the first weight values isfor a respective one of a first plurality of vehicle applicationsselected by the user, and each one of the first weight values isdetermined based on a frequency of use, by the user, of the respectiveone of the first plurality of vehicle applications. The operationsfurther comprise updating second weight values of a group applicationmatrix stored in the at least one storage based on the first weightvalues of the user-specific application matrix. Each one of the secondweight values is for a respective one of a second plurality of vehicleapplications. Each one of the second weight values is based on afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users. Theoperations further comprise transmitting the updated group applicationmatrix to the vehicle and receiving, from the vehicle, a request todownload and install, at the vehicle, at least one of the secondplurality vehicle applications, selected from the updated groupapplication matrix, that is not currently installed in the vehicle.

Another aspect of the present disclosure provides a non-transitorycomputer readable storage medium storing instructions which, ifexecuted, cause a processor of a vehicle to execute operationscomprising: obtaining information identifying a first plurality ofvehicle applications selected by a user of the vehicle; and determining,for the user, a user-specific application matrix comprising first weightvalues. Each one of the first weight values is for a respective one ofthe first plurality of vehicle applications. Each one of the firstweight values is determined based on a frequency of use, by the user, ofthe respective one of the first plurality of vehicle applications. Theoperations further comprise controlling, using the determineduser-specific application matrix, downloading and installation, at thevehicle, of at least one of the first plurality of vehicle applicationsthat is not currently installed in the vehicle.

Another aspect provides an apparatus for a vehicle, the apparatuscomprising: at least one storage storing instructions; and at least oneprocessor configured to execute the instructions to perform operations.The operations comprise controlling receiving, at the vehicle, from aserver, a group application matrix comprising second weight values. Eachone of the second weight values is for a respective one of a secondplurality of vehicle applications. Each one of the second weight valuesis based on a frequency of use of the respective one of the secondplurality of vehicle applications by a plurality of respective vehicleusers. The operations further comprise controlling, using the groupapplication matrix, downloading and installation, at the vehicle, of atleast one of the second plurality vehicle applications that is notcurrently installed in the vehicle.

BRIEF DESCRIPTION OF THE DRAWINGS

Features, advantages, and technical and industrial significance ofnon-limiting embodiments of the disclosure will be described below withreference to the accompanying drawings, in which like signs denote likeelements, and wherein:

FIG. 1 is a block diagram illustrating a configuration of a vehicleapplication management system according to a non-limiting embodiment;

FIG. 2 is a sequence diagram showing operations of a vehicle applicationmanagement system using a user-specific application matrix according toa non-limiting embodiment;

FIG. 3 is a sequence diagram showing operations of a vehicle applicationmanagement system using a group application matrix according to anon-limiting embodiment; and

FIG. 4 is another sequence diagram showing operations of a vehicleapplication management system according to a non-limiting embodiment.

DETAILED DESCRIPTION OF ILLUSTRATIVE, NON-LIMITING EMBODIMENTS

Non-limiting embodiments of the disclosure will be described in detailwith reference to the accompanying drawings. The same reference numeralsused in the drawings may identify the same or similar elements. Theterms used in the disclosure should not be strictly construed as definedin the disclosure, but should be construed as those one of ordinaryskilled in the art would understand in the context of the disclosure. Itshould be noted that the non-limiting embodiments of the disclosure maybe in different forms and are not limited to the embodiments of thedisclosure set forth herein.

FIG. 1 is a block diagram illustrating a configuration of a vehicleapplication management system comprising a vehicle 100 and a server 150according to a non-limiting embodiment. It is understood, however, thatother embodiments may not be limited to the specific configuration shownin FIG. 1 . As one non-limiting example, a user device may be employedthat is separate from the vehicle 100.

According to a non-limiting embodiment, the vehicle 100 may be used byany number of users who share the vehicle 100, such as a private carowned by a family, where the vehicle application usage of each familymember may differ. According to another non-limiting embodiment, thevehicle 100 may be a publicly accessible car-sharing vehicle used by anunspecified number of users, where the identity and vehicle applicationpreferences of the next user are not necessarily known, but time may berequired to initially prepare, download and install the vehicleapplications for the vehicle 100 for use by the next user. According toyet another non-limiting embodiment, the vehicle 100 may be a commercialvehicle such as a bus, limo, taxi, or the like, where, in addition tocustom vehicle application preferences for each user, there may also bevehicle application customization that arises from operations of thecommercial vehicle, such as routes, operating times, conditions, etc.

As shown in FIG. 1 , the vehicle 100 may comprise at least one processor101, a storage 102, a user interface 103 and a communication interface104. The at least one processor 101 may be connected to, and configuredto control, the operations of the storage 102. The at least oneprocessor 101 may be configured to, among other things, executeinstructions that are stored in the storage 102 to perform variousoperations.

The at least one processor 101 may be implemented according to variousembodiments. For example, the at least one processor 101 may beimplemented as at least one of an application specific integratedcircuit (ASIC), an embedded processor, a microprocessor, hardwarecontrol logic, a hardware finite state machine (FSM), a digital signalprocessor (DSP), a neural network processor, or the like. The at leastone processor 101 may include a central processing unit (CPU), a graphicprocessing unit (GPU), and a main processing unit (MPU), or the like. Inaddition, the at least one processor 101 may include one or moreprocessors.

According to a non-limiting embodiment, the storage 102 may store atleast one instruction and various software programs or vehicleapplications that are currently installed for use in the vehicle 100.For example, the storage 102 may include a semiconductor memory, such asa flash memory, a magnetic storage medium such as a hard disk, or thelike. The storage 102 may refer to any volatile or non-volatile memory,a read-only memory (ROM), a random access memory (RAM) communicativelycoupled to the at least one processor 101 or a memory card (e.g., amicro SD card, a memory stick) connectable to the vehicle 100. Thestorage 102 may store various software modules or codes for operatingthe vehicle 100, and the at least one processor 101 may control theoperations of the vehicle 100 by executing various software modules thatare stored in the storage 102. The storage 102 may be accessed by the atleast one processor 101 to perform data reading, recording, modifying,deleting, updating or the like. Further, the storage 102 may storeexecutable instructions, code, data objects etc.

According to a non-limiting embodiment, the user interface 103 isconfigured to receive input from, and provide information to, a user ofthe vehicle 100 or other devices. The at least one processor 101 mayreceive a user command for controlling the operations of the vehicle 100through the user interface 103.

The user interface 103 may be any computing device and may be installedin, or may be a device that is separate from, the vehicle 100. The userinterface 103 may be, for example, an input terminal of the vehicle 100,a touch screen display of the vehicle 100, a mobile phone, a mobileterminal, a tablet, a laptop computer, a desktop computer, a smartappliance, a television, a smart wearable device, etc. The userinterface 103 may include at least one processor, a memory, a display,an input device, and a communication unit. The display and input devicemay be integrated, e.g., as a touch screen display. The user interface103 may be provided through a dedicated application in the vehicle 100(e.g., an application for configuring the vehicle) or through a web pageaccessible via an Internet browser.

The user interface 103 may include a display, such as a liquid crystaldisplay (LCD) panel, organic light emitting diodes (OLED), a flexibledisplay, a touch screen display, a transparent display, or the like. Theat least one processor 101 may control the user interface 103 to displayimage signals received from the storage 102 of the vehicle 100 orreceived from an external device through the communication interface104. The user interface 103 may comprise a wide variety of inputhardware including, but not limited to, a voice interface, a microphone,a camera, a remote control, screen menus, icons, a keyboard, buttons,dials, a mouse, or the like. However, the implementation of the userinterface 103 is not limited to the aforementioned embodiments.

The user interface 103 allows the user to (among other things) selectone or more vehicle applications to be installed in the vehicle 100 whenthe user uses the vehicle 100. Based on receiving a selection of the oneor more vehicle applications from the user, the user interface 103controls transmission of information identifying the selectedapplication(s) to the at least one processor 101 of the vehicle 100. Thetransmission may be a direct transmission (e.g., peer-to-peertransmission) via a direct wireless or wired communication method (e.g.,Bluetooth, WiFi direct, NFC, USB, etc.), or may be via a network (e.g.,a local area network, a wireless local area network) or one or moreintervening devices (e.g., an Access Point, server, etc.).

The communication interface 104 may include circuitry or an interfacethat is configured to communicate with an external device, such as theserver 150, through a network. The communication interface 104 mayinclude at least one of a Wi-Fi module, a Bluetooth module, a wirelesscommunication module, or a near field communication (NFC) module.Specifically, the Wi-Fi module may communicate by a Wi-Fi method and theBluetooth module may communicate by a Bluetooth method. When using theWi-Fi module or the Bluetooth module, various connection informationsuch as service set identifier (SSID) may be transmitted and receivedfor communication connection and then various information may betransmitted and received through the communication interface 104.

The communication interface 104 can receive information from the userinterface 103 regarding vehicle applications that have been selected bythe user. The at least one processor 101 may be configured to comparethe information regarding vehicle applications that have been selectedby the user, with the vehicle applications currently installed in thevehicle 100 and determine which ones of the vehicle applications thathave been selected by the user are not currently installed in thevehicle 100 (e.g., a delta application list). The communicationinterface 104 can request and download the one or more vehicleapplications that have been selected by the user to be installed in thevehicle 100 for example, via an OTA update from the server 150.

According to a non-limiting embodiment, the at least one processor 101may determine a user-specific application matrix for a user. Theuser-specific application matrix includes a list of vehicle applicationsand, for each vehicle application, a respective factor or weight valuecorresponding to a user's frequency of use for that respective vehicleapplication. According to a non-limiting embodiment, the weight valuesmay be between 0.0 and 1.0, but this is merely one non-limiting example.For instance, the user-specific application matrix for a user k(1), anda set of vehicle applications (App1, App2, App3) selected by the userk(1), may comprise (0.6, 0.2, 0.5) as weight values based on that user'sfrequency of use of each vehicle application.

The user-specific application matrix may be transmitted from the vehicle100 to the server 150 at any time, such as once the user stops operatingthe vehicle 100 (i.e., upon turning off the engine of the vehicle, orbased on the vehicle being turned on a next time), based on theoccurrence of a predetermined event, or periodically. Further, theuser-specific application matrix may be generated or updated based on ausage history over a predetermined period by a particular user (e.g., aspecific user's use of the vehicle 100 within a predetermined timeperiod, such as one day or one week, or a specific user's use of thevehicle from one instance of starting the vehicle to stopping thevehicle, etc.). The user-specific application matrix may be stored in atleast one of the vehicle 100 and the server 150, or may benewly-generated for each use of the vehicle 100.

The server 150 may receive user-specific application matrices from aplurality of vehicles, including the vehicle 100, and may update a groupapplication matrix stored at the server 150 based on the user-specificapplication matrices received. The group application matrix is anapplication matrix that includes weight values for each of pluralvehicle applications. The weight values in the group application matrixare determined based on the frequency of uses of the applications asindicated by the received user-specific application matrices. The server150 may update the group application matrix based on user-specificapplication matrices received from a particular group of vehicles, whichmay be comparable to the vehicle 100. The server 150 then transmits theupdated group application matrix to the vehicle 100 and, if desired, aplurality of vehicles. According to a non-limiting embodiment, theserver 150 may be configured such that the server 150 stores onlyminimal configuration information about individual users.

The plurality of vehicles to which the server 150 transmits the updatedgroup application matrix may be the same as or different from theparticular group of vehicles from which the group application matrix wasdetermined. The group of vehicles may correspond to a group of vehicleswithin a predetermined region (e.g., city, county, prefecture, province,state, country, continent, etc.), or a predetermined group of people(e.g., a family, a company, or a pre-selected group of individuals).

It is understood that, according to non-limiting embodiments, the server150 may include one or more servers, and the operations of the server150 may be performed in a single server or distributed across pluralservers.

The at least one processor 101 of the vehicle 100 may be configured toidentify the vehicle applications that a new user of the vehicle ispredicted to select or use based on the group application matrixreceived from the server 150. For example, the at least one processor101 may identify a predetermined number of vehicle applications withhigher weight values in the group application matrix (e.g., the sixapplications with the highest weight values), vehicle applications withweight values that exceed a predetermined threshold value, or apredetermined number of vehicle applications that exceed thepredetermined threshold value. The at least one processor 101 may alsoidentify which vehicle applications will most nearly fill the storagecapacity or allocated storage space for vehicle applications in thestorage 102, prioritizing those vehicle applications with higher weightvalues in the group application matrix. The at least one processor 101may then determine which of those identified applications are notcurrently installed, and request, download and install thosenot-installed applications via an OTA update.

For example, the below Table 1 shows a group application matrix at t(1)determined from a group of users k(1 . . . n) at a time (t1):

USER APPLICATION MATRIX User k(1) (App1(1.0), App2(0.5), App3(1.0), . ..) User k(2) (App1(1.0), App2(0.5), App3(1.0), . . .) . . . User k(n)(App1(1.0), App2(0.5), App3(1.0), . . .) Group Application (App1(1.0),App2(0.5), App3(1.0), . . .) Matrix(t1)

The vehicle 100 may receive the Group Application Matrix(t1) from theserver 150, and the at least one processor 101 may identify that vehicleapplications App1 and App3 are the most likely to be selected by a newuser based on the weight values or factors in the group applicationmatrix. Accordingly, the at least one processor 101 may then determinewhich ones (if any) of vehicle applications App1 and App3 are notcurrently installed in the vehicle 100 and then request, download andinstall those not-installed applications via an OTA update, for example.

According to one non-limiting example, if a new user k(n+1) of thevehicle 100 subsequently selects vehicle applications App1, App2, andApp4 (e.g., via the user interface 103), the at least one processor 101may then determine that App4 is not currently installed and then requestApp4 from the server 150. App4 is then downloaded and installed in thevehicle 100 via an OTA update, for instance. As the new user k(n+1) usesthe vehicle, a use for each of the vehicle applications is monitored bythe at least one processor 101 and a frequency of use is determined bythe at least one processor 101.

According to a non-limiting embodiment, the frequency of use may bedetermined by an external device (e.g., the server 150) based oninformation indicative of the use received from the vehicle 100, e.g., ausage history or log. The at least one processor 101 (or external devicethat determines the frequency of use of the vehicle applications)generates a user-specific application matrix based on the determinedfrequency of use. For example, the user-specific application matrix foruser k(n+1) may be ((App1(1.0), App2(0.5), App3(0.0), App4(1.0) . . . ).Further, the at least one processor 101 (or external device thatgenerates the user-specific application matrix) may transmit theuser-specific application matrix to the server 150, so that the server150 can update the group application matrix using the user-specificapplication matrix.

The vehicle 100 may transmit the user-specific application matrix to theserver 150 at any time, or according to a predetermined schedule (e.g.,periodically), or in response to a predetermined event (e.g., a userinstruction to transmit the user-specific application matrix, or basedon the use of the vehicle 100 ending, stopping of the engine, etc.).According to a non-limiting embodiment, the vehicle 100 may transmit theentire user-specific application matrix, or may transmit only adetermined difference, or determined differences, between theuser-specific application matrix and the group application matrix,rather than transmitting the entire user-specific application matrix, tothereby reduce data transmission.

The server 150 may then update the group application matrix based on theuser-specific application matrix received from the vehicle 100. Forexample, the below Table 2 shows the updated group application matrix ata time t(2) in view of the user-specific application matrix of userk(n+1):

USER APPLICATION MATRIX User k(1) (App1(1.0), App2(0.5), App3(1.0), . ..) User k(2) (App1(1.0), App2(0.5), App3(1.0), . . .) . . . User k(n)(App1(1.0), App2(0.5), App3(1.0), . . .) User k(n + 1) (App1(1.0),App2(0.5), App3(0.0), App4(1.0) . . .) Group Application (App1(1.0),App2(0.5), App3(0.8), Matrix(t2) App4(0.2) . . .)

After the server 150 updates the group application matrix based on theuser-specific application matrix received from the vehicle 100, theserver may then delete the user-specific application so that theuser-specific application is not stored at the server 150 after suchupdating.

According to a non-limiting embodiment, the group application matrix maybe determined using a filter to, for example, filter out only apredetermined number of newest user-specific application matrices, or tofilter out user-specific application matrices corresponding to apredetermined period of time. For example, where the group applicationmatrix is determined from a predetermined number of newest user-specificapplication matrices and the predetermined number is n, then the updatedgroup application matrix at t(2) may be determined as shown below inTable 3:

USER APPLICATION MATRIX User k(2) (App1(1.0), App2(0.5), App3(1.0), . ..) . . . User k(n) (App1(1.0), App2(0.5), App3(1.0), . . .) Userk(n + 1) (App1(1.0), App2(0.5), App3(0.0), App4(1.0) . . .) GroupApplication (App1(1.0), App2(0.5), App3(0.7), Matrix(t2) App4(0.3) . ..)

However, it is understood that a wide variety of filter criteria may beused consistent with non-limiting embodiments. For example, although theupdated group application matrix at t(2) shown in Table 3 is derivedfrom a predetermined number of newest user-specific application matricesfrom different users (e.g., User k(2), User k(n) and User k(n+1)), thegroup application matrix may be updated based on a predetermined numberof newest user-specific application matrices that are not each fromdifferent users. Indeed, according to a non-limiting embodiment, thepredetermined number of newest user-specific application matrices mayall be from the same user. Moreover, according to a non-limitingembodiment, the filter criteria may comprise weighted normalization. Forinstance, the group application matrix may be updated by weighting neweruser-specific application matrices more heavily than older user-specificapplication matrices. Further, according to a non-limiting embodiment,the group application matrix may be updated using an average of alluser-specific application matrices that have been received by the server150.

Next, the server 150 transmits the updated group application matrix(t2)to the vehicle 100 and, optionally, to a plurality of vehicles. Theserver 150 may broadcast, multicast, or unicast the updated groupapplication matrix at any time, such as in response to a predeterminedevent (e.g., a predetermined time interval, in response to a requestfrom a vehicle, each time the matrix is updated, etc.).

The at least one processor 101 may again identify that applications App1and App3 are the most likely to be selected by a new user based on theweight values or factors in the updated group application matrix att(2). Accordingly, the at least one processor 101 may request, downloadand install the identified applications App1 and App3. For example, theat least one processor 101 may delete App4 and install App3, or the atleast one processor 101 may download App3 and keep App4 if there issufficient storage capacity.

According to another non-limiting embodiment, the at least one processor101 may determine a vehicle-specific application matrix that is based onan application matrix determined from a usage history of applications byany user of the vehicle 100 and the group application matrix receivedfrom the server 150 (e.g., an average or weighted average of the twomatrices).

According to another non-limiting embodiment, the at least one processor101 may determine multiple user-specific application matrices for asingle user, such as a user-specific application matrix for the user'stypical weekday use and a second user-specific application matrix forthe user's trip use.

In addition, according to a non-limiting embodiment, a method and anapparatus disclosed herein may be provided as software of a computerprogram product. A computer program product may be distributed in theform of a machine readable storage medium (e.g., compact disc read onlymemory (CD-ROM)) or distributed online through an application store orbetween two devices directly. In the case of on-line distribution, atleast a portion of the computer program product (e.g., a downloadableapp) may be stored temporarily or at least temporarily in a storagemedium such as a manufacturer's server, a server in an applicationstore, or a memory in a relay server.

Although some example components of the vehicle 100 are described above,it is understood that embodiments of the vehicle 100 are not limitedthereto, and the vehicle 100 may include more or less components.

According to a non-limiting embodiment, the server 150 may beimplemented by any piece of computer hardware or software that providesa service or functionality for the vehicle 100. The server 150 may acomprise communication interface 154, a processor 151 and a storage 152.The configuration of the communication interface 154, the processor 151,and the storage 152 may be implemented by non-limiting embodimentssimilar to the embodiments described above regarding the communicationinterface 104, the at least one processor 101 and the storage 102,respectively. However, embodiments of the communication interface 154,the processor 151, and the storage 152 are not limited thereto.

The communication interface 154 is configured to receive communicationsfrom, and transmit communications to, the communication interface 104.For example, the communication interface 154 may be configured to allowthe communication interface 104 to download a wide variety of vehicleapplications via an OTA update. Such vehicle applications may includeany application for use in the vehicle 100.

FIG. 2 is a flowchart illustrating operations of a vehicle applicationmanagement system using a user-specific application matrix according toa non-limiting embodiment. It is understood that the order of stepsillustrated in FIG. 2 is not limiting.

In operation S200, the at least one processor 101 of the vehicle 100obtains information identifying a first plurality of vehicleapplications that have been selected by a user of the vehicle 100. Suchinformation may be identified by the at least one processor 101 based onpast usage by the user of vehicle applications, or may be manuallyselected by the user via the user interface 103.

In operation S210, a user-specific application matrix is determined. Theuser-specific application matrix may comprise first weight values. Eachone of the first weight values may be for a respective one of the firstplurality of vehicle applications. Further, each one of the first weightvalues may be determined based on a frequency of use of the respectiveone of the first plurality of vehicle applications.

In operation S220, the user-specific application matrix is used todownload and install, at the vehicle 100, at least one of the firstplurality of vehicle applications that is not currently installed in thevehicle 100. The vehicle applications may be downloaded from the server150. Further, the downloading and installation of one(s) of the firstplurality of vehicle applications having higher first weight values(i.e., indicating higher frequency of use) may be prioritized overone(s) of the first plurality of vehicle applications having lower firstweight values. Accordingly, the vehicle applications that are mostfrequently used by the user may be installed in the vehicle 100.

Optionally, according to a non-limiting embodiment, in operation S230,the determined user-specific application matrix may be provided from thevehicle 100 to the server 150. According to a non-limiting embodiment,only differences between the determined user-specific application matrixand a group application matrix received from the server 150, may betransmitted from the vehicle 100 to the server 150, rather than theentire user-specific application matrix.

The server 150 may update a group application matrix stored in thestorage 152 using the determined user-specific application matrixprovided from the vehicle 100 to the server 150. For instance, accordingto a non-limiting embodiment, if the stored group application matrixcomprises (1.0, 0.7, 0.8, 0.3) and the determined user-specificapplication matrix comprises (1.0, 0.5, 1.0, NA) then the updated groupapplication matrix may comprise (1.0, 0.6, 0.9, 0.3). According to anon-limiting embodiment, the server 150 may update a stored groupapplication matrix with the determined user-specific application matrixprovided from the vehicle 100 to the server 150 every time a new useruses the vehicle 100.

In addition to, or as an alternative to, identifying the vehicleapplications that a user is predicted to select or use based on thedetermined user-specific application matrix, the vehicle applicationsthat a user is predicted to select or use may be identified usinginformation from other vehicle users using a group application matrix.For instance, FIG. 3 is a flowchart illustrating operations of a vehicleapplication management system using a group application matrix accordingto a non-limiting embodiment. It is understood that the order of stepsillustrated in FIG. 3 is not limiting.

In operation S310, the vehicle 100 receives, from the server 150, agroup application matrix comprising second weight values. Each one ofthe second weight values is for a respective one of a second pluralityof vehicle applications. Moreover, each one of the second weight valuesis based on a frequency of use of the respective one of the secondplurality of vehicle applications by a plurality of respective vehicleusers. According to a non-limiting embodiment, only differences betweenthe updated group application matrix and the user-specific applicationmatrix received from the vehicle 100, may be transmitted from the server150 to the vehicle 100, rather than the entire group application matrix.

The plurality of respective vehicle users may include the user, or maynot include the user. For example, the second weight values may be basedon a frequency of use of the respective ones of the second plurality ofvehicle applications by a plurality of respective vehicle users over apredetermined time period, from a particular geographic region, from aparticular age group, or from any other demographic grouping. Accordingto a non-limiting embodiment, the second weight values may be based on afrequency of use of the respective ones of the second plurality ofvehicle applications by users of a same vehicle model or a same vehicletype as the vehicle 100.

According to a non-limiting embodiment, the group application matrix mayreflect the average preferences for vehicle applications of all userswithin 5 km of the vehicle, preferences for vehicle applications usedwithin the past day or two and/or preferences for vehicle applicationson a corresponding day of the week/time.

According to a non-limiting embodiment, the second weight values may bebased on a frequency of use of the respective ones of the secondplurality of vehicle applications by members of a particular family whoshare use of the vehicle 100, or by members of a particular commercialentity who share use of the vehicle 100, such as a commercial bus ortaxi service. Accordingly, the second weight values may be selectedbased on a wide variety of groupings of particular users to predictvehicle applications that the user is likely to use in the vehicle 100.

Operation S320 comprises controlling, using the group application matrixreceived from the server 150, downloading and installation, at thevehicle 100, of at least one of the second plurality vehicleapplications that is not currently installed in the vehicle. Further,the downloading and installation of one(s) of the second plurality ofvehicle applications having higher second weight values (i.e.,indicating higher frequency of use) may be prioritized over other one(s)of the second plurality of vehicle applications having lower secondweight values. Accordingly, the vehicle applications that are predictedto be most frequently used by the user (according to the higher secondweight values) may be installed in the vehicle 100.

According to a non-limiting embodiment, an updated group applicationmatrix may be provided by the server 150 to the vehicle 100, wherein theupdated group application matrix has been updated using the determineduser-specific application matrix that was provided to the server 150from the vehicle.

According to a non-limiting embodiment, operations S200, S210 and S220may be performed, whereas operations S230, S310 and S320 are notperformed.

Alternatively, according to a non-limiting embodiment, operations S200,S210 and S220 are performed, but operations S230, S310 and S320 are onlyperformed if there is available storage capacity for installingadditional vehicle applications.

According to a non-limiting embodiment, operations S200, S210, S220 andS230 may not be performed and operations S310 and S320 are performedand, thus, only vehicle applications from the group application matrixmay be installed.

FIG. 4 is another sequence diagram showing operations of a vehicleapplication management system including the vehicle 100 and the server150 according to a non-limiting embodiment. Although FIG. 4 showsoperations occurring in a particular sequential order, the operationsmay occur in a wide variety of sequential orders consistent withnon-limiting embodiments and some operation may not be performed at allconsistent with non-limiting embodiments.

In operation S400, the vehicle 100 provides to the server 150 auser-specific application matrix. The user-specific application matrixmay comprise the first weight values. Each one of the first weightvalues may be for a respective one of the first plurality of vehicleapplications selected by the user of the vehicle 100. Additionally, eachone of the first weight values is determined based on a frequency ofuse, by the user, of the respective one of the first plurality ofvehicle applications.

In operation S410, the server 150 transmits to the vehicle 100 a groupapplication matrix comprising second weight values. Although FIG. 4shows operation S410 occurring after operation S400, operation S410 mayoccur before operation S400, consistent with a non-limiting embodiment.Accordingly, a group application matrix may be provided to the vehicle100 and corresponding vehicle applications may be pre-installed withoutfirst receiving any selection of vehicle applications from the user ofthe vehicle 100. Each one of the second weight values may be for arespective one of a second plurality of vehicle applications. Further,each one of the second weight values may be based on a frequency of useof the respective one of the second plurality of vehicle applications bya plurality of respective vehicle users.

In operation S420, an application matrix of the vehicle 100 is updatedusing the group application matrix received from the server 150. Forinstance, according to a non-limiting embodiment, the at least oneprocessor 101 may select vehicle applications having higher ones of thesecond weight values, from among the second plurality of vehicleapplications, using the received group application matrix, and mayupdate the application matrix of the vehicle 100 to include the vehicleapplications having the higher second weight values.

In operation S430, the vehicle 100 may transmit to the server 150 avehicle application list, which lists at least one application that hasbeen selected at the vehicle 100 (e.g., from among the vehicleapplications having higher ones of the second weight values), but is notcurrently installed in the vehicle 100. In operation S440, the vehicleapplication that is not currently installed in the vehicle 100 isdownloaded and installed in the vehicle 100.

In the case where a vehicle 100 is used by multiple users (e.g., aprivate family, commercial car-sharing, bus, taxi, etc.) and a userbegins using the vehicle 100, vehicle applications may be installed inthe vehicle 100 via an OTA according to the user's preferences,tendencies, etc. However, if vehicle applications at the vehicle 100 arerewritten each time a new user uses the vehicle 100, then the amount ofdata communication (e.g., via OTA) would be large. Moreover, the timerequired to download and install the preferred vehicle applicationswould be long and the vehicle 100 could not be used immediately.

To address such issues, and others, a non-limiting embodiment maypredict, download and install, in advance, the optimal vehicleapplications for users. Such predictions may be calculated from datacollected from a group of other users having expected similarities tothe next potential user.

Also, if the server 150 manages and distributes the vehicle applicationsfor each vehicle such that the installed vehicle applications arecustomized for each individual user, from an unspecified number ofusers, the management load on the server 150, and the resources requiredfrom the server 150, could be substantial. Thus, a non-limitingembodiment more advantageously distributes processing between thevehicle 100 and the server 150.

Embodiments of the disclosure have been shown and described above,however, the embodiments of the disclosure are not limited to theaforementioned specific embodiments. It may be understood that variousmodifications, substitutions, and improvements can be made by thosehaving ordinary skill in the art in the technical field to which thedisclosure belongs, without departing from the spirit of the disclosureas claimed by the appended claims. It should be understood that suchmodifications, substitutions, and improvements shall fall within theprotection scope of the disclosure, and should not to be construedindependently from the technical idea or prospect of the disclosure.

What is claimed is:
 1. An apparatus for a vehicle, the apparatuscomprising: at least one storage storing instructions; and at least oneprocessor configured to execute the instructions to perform operationscomprising: obtaining information identifying a first plurality ofvehicle applications selected by a user of the vehicle; determining, forthe user, a user-specific application matrix comprising first weightvalues, wherein each one of the first weight values is for a respectiveone of the first plurality of vehicle applications, and wherein each oneof the first weight values is determined based on at least a frequencyof use, by the user, of the respective one of the first plurality ofvehicle applications; and controlling, using the determineduser-specific application matrix, downloading and installation, at thevehicle, of at least one of the first plurality of vehicle applicationsthat is not currently installed in the vehicle.
 2. The apparatus ofclaim 1, the operations further comprising: controlling receiving, atthe vehicle, from a server, a group application matrix comprising secondweight values, wherein each one of the second weight values is for arespective one of a second plurality of vehicle applications, andwherein each one of the second weight values is based on at least afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users;controlling, using the group application matrix, downloading andinstallation, at the vehicle, of at least one of the second pluralityvehicle applications that is not currently installed in the vehicle. 3.The apparatus of claim 2, wherein the second weight values are based onat least the frequency of use of the respective ones of the secondplurality of vehicle applications by the plurality of respective vehicleusers over a predetermined time period.
 4. The apparatus of claim 2,wherein the plurality of respective vehicle users are vehicle userslocated within a predetermined region.
 5. The apparatus of claim 2,wherein the plurality of respective vehicle users are users of a samevehicle model or a same vehicle type as the vehicle.
 6. The apparatus ofclaim 1, the operations further comprising: controlling receiving, atthe vehicle, from a server, a group application matrix comprising secondweight values, wherein each one of the second weight values is for arespective one of a second plurality of vehicle applications, andwherein each one of the second weight values is based on at least afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users;determining differences between the determined user-specific applicationmatrix and the received group application matrix; and controllingproviding the determined differences to the server without providing theentire determined user-specific application matrix.
 7. The apparatus ofclaim 1, the operations further comprising: controlling providing thedetermined user-specific application matrix to a server; controllingreceiving, at the vehicle, from the server, a group application matrixcomprising second weight values determined using the provideduser-specific application matrix, wherein each one of the second weightvalues is for a respective one of a second plurality of vehicleapplications, and wherein each one of the second weight values is basedon at least a frequency of use of the respective one of the secondplurality of vehicle applications by a plurality of respective vehicleusers; and controlling, using the group application matrix, downloadingand installation, at the vehicle, of at least one of the secondplurality vehicle applications that is not currently installed in thevehicle.
 8. The apparatus of claim 1, wherein the controlling, using thedetermined user-specific application matrix, downloading andinstallation, at the vehicle, of the at least one of the first pluralityof vehicle applications that is not currently installed in the vehiclecomprises prioritizing for the downloading and installation ones of thefirst plurality of vehicle applications having higher respective firstweight values.
 9. The apparatus of claim 2, wherein the controlling,using the group application matrix, downloading and installation, at thevehicle, of the at least one of the second plurality vehicleapplications that is not currently installed in the vehicle comprisesprioritizing for the downloading and installation ones of the secondplurality of vehicle applications having higher respective second weightvalues.
 10. A vehicle application management server comprising: at leastone storage storing instructions; and at least one processor configuredto execute the instructions to perform operations comprising: receiving,from a vehicle, information about a user-specific application matrix fora user of the vehicle, wherein the user-specific application matrixcomprises first weight values, wherein each one of the first weightvalues is for a respective one of a first plurality of vehicleapplications selected by the user, and wherein each one of the firstweight values is determined based on at least a frequency of use, by theuser, of the respective one of the first plurality of vehicleapplications; updating second weight values of a group applicationmatrix stored in the at least one storage using the first weight valuesof the user-specific application matrix, wherein each one of the secondweight values is for a respective one of a second plurality of vehicleapplications, and wherein each one of the second weight values is basedon at least a frequency of use of the respective one of the secondplurality of vehicle applications by a plurality of respective vehicleusers; transmitting the updated group application matrix to the vehicle;and receiving, from the vehicle, a request to download and install, atthe vehicle, at least one of the second plurality vehicle applications,selected from the updated group application matrix, that is notcurrently installed in the vehicle.
 11. The vehicle applicationmanagement server of claim 10, wherein the second weight values arebased on at least the frequency of use of the respective ones of thesecond plurality of vehicle applications by the plurality of respectivevehicle users over a predetermined time period.
 12. The vehicleapplication management server of claim 10, wherein the plurality ofrespective vehicle users are vehicle users located within apredetermined region.
 13. The vehicle application management server ofclaim 10, wherein the plurality of respective vehicle users are vehicleusers of a same vehicle model or a same vehicle type as the vehicle. 14.The vehicle application management server of claim 10, wherein theinformation about the user-specific application matrix comprisesdetermined differences between the user-specific application matrix andthe group application matrix without including the entire user-specificapplication matrix.
 15. A non-transitory computer readable storagemedium storing instructions which, if executed, cause a processor of avehicle to execute operations comprising: obtaining informationidentifying a first plurality of vehicle applications selected by a userof the vehicle; determining, for the user, a user-specific applicationmatrix comprising first weight values, wherein each one of the firstweight values is for a respective one of the first plurality of vehicleapplications, and wherein each one of the first weight values isdetermined based on at least a frequency of use, by the user, of therespective one of the first plurality of vehicle applications; andcontrolling, using the determined user-specific application matrix,downloading and installation, at the vehicle, of at least one of thefirst plurality of vehicle applications that is not currently installedin the vehicle.
 16. The non-transitory computer readable storage mediumof claim 15, the operations further comprising: controlling receiving,at the vehicle, from a server, a group application matrix comprisingsecond weight values, wherein each one of the second weight values isfor a respective one of a second plurality of vehicle applications, andwherein each one of the second weight values is based on at least afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users;controlling, using the group application matrix, downloading andinstallation, at the vehicle, of at least one of the second pluralityvehicle applications that is not currently installed in the vehicle. 17.The non-transitory computer readable storage medium of claim 16, whereinthe second weight values are based on at least the frequency of use ofthe respective ones of the second plurality of vehicle applications bythe plurality of respective vehicle users over a predetermined timeperiod.
 18. The non-transitory computer readable storage medium of claim16, wherein the plurality of respective vehicle users are vehicle userslocated within a predetermined region.
 19. The non-transitory computerreadable storage medium of claim 16, wherein the plurality of respectivevehicle users are users of a same vehicle model or a same vehicle typeas the vehicle.
 20. The non-transitory computer readable storage mediumof claim 15, the operations further comprising: controlling receiving,at the vehicle, from a server, a group application matrix comprisingsecond weight values, wherein each one of the second weight values isfor a respective one of a second plurality of vehicle applications, andwherein each one of the second weight values is based on at least afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users;determining differences between the determined user-specific applicationmatrix and the received group application matrix; and controllingproviding the determined differences to the server without providing theentire determined user-specific application matrix.
 21. Thenon-transitory computer readable storage medium of claim 15, theoperations further comprising: controlling providing the determineduser-specific application matrix to a server; controlling receiving, atthe vehicle, from the server, a group application matrix comprisingsecond weight values determined using the provided user-specificapplication matrix, wherein each one of the second weight values is fora respective one of a second plurality of vehicle applications, andwherein each one of the second weight values is based on at least afrequency of use of the respective one of the second plurality ofvehicle applications by a plurality of respective vehicle users; andcontrolling, using the group application matrix, downloading andinstallation, at the vehicle, of at least one of the second pluralityvehicle applications that is not currently installed in the vehicle. 22.The non-transitory computer readable storage medium of claim 15, whereinthe controlling, using the determined user-specific application matrix,downloading and installation, at the vehicle, of the at least one of thefirst plurality of vehicle applications that is not currently installedin the vehicle comprises prioritizing for the downloading andinstallation ones of the first plurality of vehicle applications havinghigher respective first weight values.
 23. The non-transitory computerreadable storage medium of claim 16, wherein the controlling, using thegroup application matrix, downloading and installation, at the vehicle,of the at least one of the second plurality vehicle applications that isnot currently installed in the vehicle comprises prioritizing for thedownloading and installation ones of the second plurality of vehicleapplications having higher respective second weight values.
 24. Anapparatus for a vehicle, the apparatus comprising: at least one storagestoring instructions; and at least one processor configured to executethe instructions to perform operations comprising: controllingreceiving, at the vehicle, from a server, a group application matrixcomprising second weight values, wherein each one of the second weightvalues is for a respective one of a second plurality of vehicleapplications, and wherein each one of the second weight values is basedon at least a frequency of use of the respective one of the secondplurality of vehicle applications by a plurality of respective vehicleusers; and controlling, using the group application matrix, downloadingand installation, at the vehicle, of at least one of the secondplurality vehicle applications that is not currently installed in thevehicle.
 25. The apparatus of claim 24, the operations furthercomprising: obtaining information identifying a first plurality ofvehicle applications selected by a user of the vehicle; determining, forthe user, a user-specific application matrix comprising first weightvalues, wherein each one of the first weight values is for a respectiveone of the first plurality of vehicle applications, and wherein each oneof the first weight values is determined based on at least a frequencyof use, by the user, of the respective one of the first plurality ofvehicle applications; and controlling, using the determineduser-specific application matrix, downloading and installation, at thevehicle, of at least one of the first plurality of vehicle applicationsthat is not currently installed in the vehicle.
 26. The apparatus ofclaim 24, wherein the controlling, using the group application matrix,downloading and installation, at the vehicle, of the at least one of thesecond plurality vehicle applications that is not currently installed inthe vehicle comprises prioritizing for the downloading and installationones of the second plurality of vehicle applications having higherrespective second weight values.
 27. The apparatus of claim 25, whereinthe controlling, using the determined user-specific application matrix,downloading and installation, at the vehicle, of the at least one of thefirst plurality of vehicle applications that is not currently installedin the vehicle comprises prioritizing for the downloading andinstallation ones of the first plurality of vehicle applications havinghigher respective first weight values.
 28. The apparatus of claim 1,wherein each one of the first weight values is determined based on atleast a frequency of use, by the user, of the respective one of thefirst plurality of vehicle applications over a predetermined timeperiod.